#include <../lib/igloo/igloo.h>
using namespace igloo;

#include <stdio.h>
#include <string>
using namespace std;

#include "../../Archivos/ArchivoDeEstructurasVariables.h"
#include "../../Entidades/Candidato.h"
using namespace Archivos;
using namespace Entidades;
Context(TestCandidato)
{

	ArchivoDeEstructurasVariables* archivo;
	string path;

	void SetUp() {

		path = "TestCandidato.bin";
		archivo = new ArchivoDeEstructurasVariables(path);

		Candidato* entidadInsertada = new Candidato();
		entidadInsertada->setVotante(33362726);
		entidadInsertada->setLista(200110101, "Presidente", "Lista 7");
		entidadInsertada->setCargo("Vicepresidente!");
		archivo->insertar(entidadInsertada);
		delete entidadInsertada;
	}

	void TearDown() {

		remove(path.c_str());
		delete archivo;
	}

	Spec(TestLeer) {

		Candidato* entidadLeida = new Candidato();
		archivo->leer(entidadLeida, 0);

		Assert::That(entidadLeida->getVotante()->getDNI(), Is().EqualTo(33362726));
		Assert::That(entidadLeida->getLista()->getEleccion()->getFecha(), Is().EqualTo(200110101));
		Assert::That(entidadLeida->getLista()->getEleccion()->getCargo()->getNombre(), Is().EqualTo("Presidente"));
		Assert::That(entidadLeida->getCargo()->getNombre(), Is().EqualTo("Vicepresidente!"));

		delete entidadLeida;
	}

	Spec(TestBorrar) {

		Candidato* entidadBorrada = new Candidato();
		bool borradoExitoso = archivo->borrar(entidadBorrada, 0);
		delete entidadBorrada;

		Assert::That(borradoExitoso, Is().EqualTo(true));
	}

};

